<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>async执行错误状态代码</title>
	</head>
	<body>
		<script type="text/javascript">
			
			
			// function test()
			// {
			// 	return new Promise((resolve,reject)=>{
			// 		setTimeout(()=>{
			// 			if(1)
			// 			{
			// 			   resolve("执行成功");
			// 			}
			// 			else
			// 			{
			// 				reject("错误")
			// 			}
			// 		},3000)
			// 	})
			// }
			// async function demo()
			// {
			// 	console.log("开始执行");
			//    let data = await test();    //执行异步函数当异步函数返回一个promise
			// 	console.log(`完成${data}`);
			// }
			// demo();
			
			//如果执行错误信息会 Uncaught (in promise) 错误
			//解决方案一：
			// function test()
			// {
			// 	return new Promise((resolve,reject)=>{
			// 		setTimeout(()=>{
			// 			if(0)
			// 			{
			// 			   resolve("执行成功");
			// 			}
			// 			else
			// 			{
			// 				reject("错误")
			// 			}
			// 		},3000)
			// 	})
			// }
			// async function demo()
			// {
			// 	console.log("开始执行");
			//     await test().catch((err)=>{
			// 	   console.log(err);
			//    });    //执行异步函数当异步函数返回一个promise
			// 	console.log(`完成`);
			// }
			// demo();
			
			//解决方法二 
			function test()
			{
				return new Promise((resolve,reject)=>{
					setTimeout(()=>{
						if(1)
						{
						   resolve([true,"执行成功"]);
						}
						else
						{
							resolve([false,"错误"]);  //用reject的话必须使用回调函数catch(),所以这边也使用一下resolve函数的特性
						}
					},3000)
				})
			}
			async function demo()
			{
				console.log("开始执行");
			   let [flag,info] = await test();  
				  if(flag)
				  {
					  console.log(`执行了${flag}${info}`)
				  }
				  else
				  {
					  console.log(`完成${flag}${info}`);	
				  }
				
			}
			demo();
		</script>
	</body>
</html>
